// function f1(){
//     'use strict'
//     return this;
// }

// console.log((f1())) // 严格模式下，this 指向 undefined


// function f2(){
//     return this;
// }

// console.log(f2() === global) // 非严格模式下，this 指向全局对象 window



// var name = "zhangsan"

// var obj = {
//     name: "lisi",
//     getName: function () {
//         return this.name;
//     }
// }


// var getName = obj.getName;

// console.log(getName()===obj.getName())


// 示例代码
var name = 'zhangsan';

console.log(this.name == undefined);

var getName = function () {
  console.log(this===global) 
  console.log(this.name === undefined)
  return this.name
}

getName() 

// or

var obj =  {
  name: 'John',
  getName: function () {
    console.log(this === global)
    console.log(this.name === undefined)
    return this.name
  }
}


// 提取函数到普通变量中
var getName = obj.getName;

getName()


// 使用bind绑定
// var obj =  {
//   name: 'John',
//   getName: function () {
//     console.log(this===obj)
//     console.log(this.name === 'John')
//     return this.name
//   }
// }

// var getName = obj.getName.bind(obj) ;

// getName() // globalName

